package com.jiang.readline.Service.Impl;

import com.jiang.readline.Service.FileReadRubyService;
import com.jiang.readline.Utils.CountBlackLinesUtils;
import com.jiang.readline.Utils.CountCodeLinesUtils;
import com.jiang.readline.Utils.CountCommentsUtils;
import com.jiang.readline.Utils.CountLinesUtil;
import org.springframework.stereotype.Service;

import java.io.File;

@Service
public class FileReadRubyServiceImpl implements FileReadRubyService {

    public  static  int  RubyFilecount = 0 ;  //计数->文件数量
    public  static  int  RubyLines = 0 ;
    public  static  int  RubyCode = 0 ;
    public  static  int  RubyComments = 0 ;
    public  static  int  RubyBlanks = 0 ;

    @Override
    public String readFile(File file) {
        //判断参数中的file是否为文件夹
        if (file.isDirectory()) {
            //拿到文件夹下的所有文件
            File[] files = file.listFiles();
            //遍历文件夹下的所有文件
            for (File f : files) {
                //递归 继续找此文件夹下的文件
                readFile(f);
            }
        } else {
            //如果此文件下没有文件，则判断后续是否为.rb 结尾的文件，并统计一系列
            //注:static 会因每次访问而逐增，需要每次调用Controller调用该方法的时候将num初始化为0 对应FileReadController中的 FileReadServiceImpl.num = 0;
            String fileName = file.getName();
            String path = file.getPath();
            if (fileName.endsWith(".rb")) {
                RubyFilecount++;
                RubyLines+= CountLinesUtil.CountLines(path);
                RubyCode+= CountCodeLinesUtils.CodeLinesForRuby(path);
                RubyComments+= CountCommentsUtils.CommentsLinesForRuby(path);
                RubyBlanks+= CountBlackLinesUtils.BlackLines(path);
            }
        }
        //      文件          总行数     代码       注释        留白
        return RubyFilecount+","+RubyLines+","+RubyCode+","+RubyComments+","+RubyBlanks;
    }
}
